iT邦幫忙

2023 iThome 鐵人賽

DAY 26
0
Security

道德駭客新手入門系列 第 26

Day 26 網站應用程式入侵 4

  • 分享至 

  • xImage
  •  

認證機制攻擊

用戶名枚舉

用戶名枚舉是攻擊者用來識別系統中有效用戶名的一種技術。此信息可用於發起進一步的攻擊,例如暴力破解密碼攻擊或社會工程攻擊。

攻擊者可以通過兩種主要方式枚舉用戶名:

  • 冗長的失敗消息:當用戶嘗試登錄系統時,如果用戶名和密碼無效,系統可能會返回錯誤消息。如果錯誤消息太冗長,它可能會泄露有關用戶名的資訊,例如是否存在。例如,錯誤消息“帳戶 <用戶名> 未找到”表明用戶名存在,即使密碼不正確。
  • 可預測的用戶名:某些系統以可預測的方式生成用戶名,例如通過遞增數字或使用順序模式。例如,系統可能會生成“user1”、“user2”和“user3”這樣的用戶名。如果攻擊者知道模式,他們可以輕鬆枚舉系統中的所有有效用戶名。

密碼攻擊

密碼攻擊是任何試圖通過猜測或破解用戶密碼來獲得計算機系統或帳戶的未經授權訪問的嘗試。有許多不同類型的密碼攻擊,包括:

  • 密碼功能漏洞:這些攻擊利用密碼的實施或存儲方式中的弱點。例如,攻擊者可以利用密碼重置機制中的漏洞重置任何帳戶的密碼。
  • 密碼猜測:密碼猜測攻擊涉及根據常用密碼、有關用戶的個人信息或攻擊者可能知道的其他信息來猜測用戶的密碼。
  • 暴力破解攻擊:暴力破解攻擊涉及嘗試所有可能的字符組合,直到找到正確的密碼。這種攻擊可能非常耗時,但它可以對弱密碼有效。
  • 字典攻擊:字典攻擊涉及嘗試一組已知密碼對用戶帳戶進行攻擊。這種攻擊可以對基於常用單詞或短語的密碼有效。
  • 攻擊密碼重置機制:這種攻擊涉及利用密碼重置機制中的漏洞重置任何帳戶的密碼。

Session 攻擊

攻擊者針對驗證機制使用的 Session 攻擊類型包括:

  • 預測 Session :它側重於預測Session ID 值,使攻擊者能夠繞過應用程序的驗證機制。通過分析和理解Session ID 生成過程,攻擊者可以預測有效Session ID 值並獲得對應用程序的訪問權限。
  • Session 暴力破解:攻擊者對目標用戶的Session ID 進行暴力破解,並使用它作為合法用戶登錄並獲得對應用程序的訪問權限。
  • Session 污染:它允許攻擊者注入惡意內容、修改用戶的線上體驗並獲取未經授權的訊息。

Cookie 攻擊

Cookie 攻擊有以下類型:

  • Cookie 污染:它是一種參數篡改攻擊,攻擊者修改 Cookie 內容以獲取用戶的未經授權訊息,從而進行身份盜竊。
  • Cookie 嗅探:它是一種技術,攻擊者嗅探一個已登錄到目標網站的受害者的包含Session ID 的 Cookie,並使用該 Cookie 繞過驗證過程並登錄受害者的帳戶。
  • Cookie 重放 : Cookie 重放是一種通過重放包含該用戶Session ID 的會話/Cookie 來偽裝合法用戶的技術(只要該用戶保持登錄狀態)。此攻擊在用戶退出會話後將停止工作。

認證機制設計缺陷

與 Web 應用程式安全性中涉及的其他實作相比,身份驗證機制更容易受到攻擊。 應用程式通常透過使用者的登入憑證來驗證使用者; 即使此身份驗證過程中的一個小缺陷也可能導致嚴重的後果,例如向非法使用者授予存取權限。

  • 弱密碼:任何應用程式都旨在對檢查和驗證使用者憑證進行最低程度的控制。 使用者經常會遇到接受密碼的應用程序,例如空白或短值、普通名稱、字典單字、與使用者名稱相同的密碼以及預設參數。 攻擊者很容易猜出此類密碼,從而允許他們存取應用程式資源。
  • 暴力登入:應用程式的登入功能允許攻擊者預測使用者憑證,攻擊者可以透過該憑證非法進入應用程式。 如果應用程式允許多次登入嘗試而沒有任何限制,例如在一定次數的嘗試後封鎖帳戶,則攻擊者可以繼續嘗試不同的密碼,直到找到正確的密碼。 因此,即使是不專業的駭客也可以透過手動輸入不同的密碼組合來登入。
  • 詳細失敗訊息:應用程式的任何登入表單都要求使用者提供至少兩個字段,即使用者名稱和密碼。 一些應用程式也可能要求提供其他參數,例如 DOB、安全問題的答案和 OTP 密碼,以驗證使用者。 如果登入嘗試不成功,應用程式將指示所提供的資訊無效。 當應用程式指定哪個欄位不正確或彈出拒絕存取的原因時,攻擊者可以透過嘗試大量相似的名稱或單字來列舉存取應用程式所需的有效數據,從而輕鬆利用該欄位。 枚舉資料清單也可以稍後用於社會工程。
  • 不安全的憑證傳輸:如果應用程式建立不安全的HTTP 連線來傳遞敏感訊息,則它很容易受到MITM 攻擊,攻擊者可以透過這種攻擊竊聽並阻礙資料傳輸。 即使建立了 HTTPS 連接,如果應用程式以不安全的方式處理憑證(例如將資訊作為查詢字串參數傳遞以及將憑證儲存在 cookie 中),攻擊者仍然可以竊取憑證。
  • 密碼重設機制:在大多數應用中,密碼重設機制是強制性的,並且定期應用,以減少密碼外洩的威脅。 此外,當使用者發現其憑證被濫用時,他們可以立即更改密碼以防止非法使用。 有時,此密碼重設功能也可能被利用。 主登入功能中被忽略的漏洞可能會在密碼重設機制中再次出現。 密碼重置機制的一些缺陷如下:
    • 產生詳細錯誤,指定使用者名稱是否有效
    • 啟用「現有密碼」欄位的猜測,沒有任何限制
    • 僅在驗證現有密碼後檢查「新密碼」和「確認密碼」欄位是否包含相同的值,從而允許攻擊成功地明確識別現有密碼
  • 忘記密碼機制 : 與密碼重設機制一樣,恢復忘記密碼的方法通常會帶來在主登入功能中通常被忽略的問題,例如枚舉使用者名稱。 此外,忘記密碼機制中的幾個設計缺陷通常使其更容易受到攻擊,從而使應用程式的整體身份驗證邏輯成為目標。 忘記密碼機制的一些缺陷如下:
    • 當使用者忘記密碼時提供二次詢問
    • 開發人員經常忽略應用程式在密碼恢復過程中被暴力破解的可能性。 如果應用程式允許任意次數的嘗試恢復密碼,則很可能會透過猜測與使用者相關的隨機答案來恢復密碼
  • 「記住我」功能:應用程式還提供「記住我」功能,以方便避免用戶嘗試從其裝置重複登入應用程式時重新輸入用戶名和密碼。 這種機制通常很容易受到攻擊,因為使用者可能會受到本機電腦和其他電腦上的使用者的攻擊。 「記住我」功能是透過一些持久性 cookie 來強制執行的。 啟動這些 cookie 後,應用程式會信任它們,因為它們已儲存在先前的 Session 中,並產生新 Session ,而無需再次要求登入憑證。 攻擊者可以嘗試使用普通單字清單或枚舉使用者名稱來獲得對應用程式的完全存取權限,而無需經過驗證。
  • 使用者模擬:一些特權使用者使用其他使用者憑證存取應用程序,以協助原始使用者執行其操作。 例如,如果網路連線中斷,使用者可以聯絡服務供應商尋求建議。 然後,客戶服務主管使用其係統中的使用者資料登入並協助使用者解決服務中斷問題。 如果應用程式允許特權用戶模擬其他用戶,則模擬邏輯中的任何缺陷都可能導致垂直權限升級,攻擊者可以透過這種方式獲得對應用程式的完全存取權。
  • 驗證不當:應用程式設計有正確的身份驗證機制,例如接受最小長度的密碼並允許區分大小寫(大小寫)、數字和特殊字元。 相較之下,設計不當的應用程式的身份驗證機制不僅忽略了良好的安全實現,而且也未能考慮使用者嘗試應用強密碼字元。
    例如,某些應用程式會縮短密碼並僅評估前幾個字元。 有些應用程式會檢查不區分大小寫的密碼,而其他應用程式會在密碼檢查之前執行不尋常的字元剝離。 攻擊者可以對此類應用程式執行自動密碼猜測攻擊,以刪除不需要的測試案例並縮短危害帳戶所需的請求數量。
  • 可預測的使用者名稱和密碼:有些應用程式會根據可預測的順序自動產生使用者名稱。 攻擊者利用應用程式的這一特性,立即獲取有效的用戶名列表,透過該列表他們可以進行進一步的攻擊。 有時,用戶清單是一次性創建的或以群組的形式創建的,所有這些用戶的初始密碼都是透過某些來源分發的。 創建密碼的來源可以讓攻擊者猜測使用者的密碼。 此類漏洞通常在內網環境中觸發。
  • 憑證的不安全分發:大多數應用程式採用透過簡訊、電子郵件、郵寄等方式提供登入憑證的程式。在某些情況下,提供給使用者的內容可能不僅包括登入憑證,還包括由「啟動」組成的URL code」來更改系統產生或最初產生的密碼。 如果將一堆此類 URL 發送給相同的用戶,攻擊者可以透過註冊多個用戶帳戶來發現此活動,並推斷出透過 URL 發送給新註冊和尚未註冊的用戶的啟動代碼。

授權攻擊

在授權攻擊中,攻擊者首先尋找一個具有有限權限的合法帳戶,然後以該使用者身份登錄,逐漸升級權限以存取受保護的資源。攻擊者隨後通過修改與使用者ID、用戶名、訪問群組、成本、檔案名稱、檔案識別符等相關的輸入字段,來破壞應用程式的授權方案。攻擊者使用各種技術來執行授權攻擊,包括修改統一資源識別符(URI)、參數篡改、POST數據、HTTP標頭、查詢字符串、Cookies 和隱藏標籤等。

  • 統一資源識別符(URI):攻擊者可以使用URI來訪問受到保護的文件/目錄、注入SQL查詢或其他未使用的命令,以及將用戶重定向到與其他伺服器相關聯的某個網站。
  • 參數篡改:參數篡改涉及對伺服器和客戶端之間交換的參數進行操作,以修改應用程式數據,例如產品的價格和數量、權限和用戶憑證。
  • POST數據:POST數據通常包括授權和會話信息,攻擊者可以利用POST數據中的漏洞並輕鬆篡改它。
  • HTTP標頭:攻擊者可以編寫自己的程序並執行HTTP請求,以修改HTTP標頭。他們還可以使用可用工具來修改來自瀏覽器的任何數據。一般來說,授權HTTP標頭包含Base-64編碼的用戶名和密碼。
  • 查詢字符串和Cookies:瀏覽器使用Cookies來維護其在無狀態HTTP協議中的狀態,以及存儲用戶喜好、會話令牌等數據。客戶端可以修改Cookies並將它們與URL請求一起發送到伺服器,因此攻擊者可以修改Cookie內容。
  • 隱藏標籤:HTML在用戶在HTML頁面上選擇任何內容時,將其存儲為表單字段值,並將其作為HTTP請求(GET或POST)發送到應用程式。HTML可以將字段值存儲為隱藏字段,攻擊者可以通過操作這些隱藏值來輕鬆訪問和運行頁面。

存取控制攻擊

存取控制是應用程式安全機制的一部分,基於身份驗證和會話管理,它們在邏輯上確保特定的使用者只能訪問其授權的資源。攻擊者會對網站進行詳細調查,以識別應用程式的存取控制細節,包括以下內容:

  1. 個別對特定資料子集的存取:攻擊者可能尋找應用程式中是否存在對數據的細微或不正確的存取控制。他們可能嘗試通過修改請求或使用其他手法來存取未授權的數據。
  2. 授權層級(員工、經理、主管、CEO等):攻擊者會嘗試識別應用程式中的不同授權層級,以查找提升權限的潛在方法。他們可能試圖以普通用戶的身份訪問高級別的資源或功能。
  3. 管理員功能配置和監控:攻擊者可能尋找應用程式中的管理員功能,這些功能通常用於配置和監控應用程式。如果攻擊者能夠未經授權地訪問這些功能,他們可能會對應用程式進行不當操作。
  4. 允許升級權限的功能:攻擊者會尋找應用程式中的功能,這些功能允許普通用戶升級其權限。他們可能會試圖利用這些功能來取得更高級別的授權,以訪問受限制的資源或執行敏感操作。

不安全的存取控制

  1. 基於參數的存取控制:許多Web應用程式根據請求中的參數(如Cookies和查詢字串參數)來確定授予請求的存取權限。這些參數通常在普通用戶和管理員之間有所不同,有時對普通用戶是不可見的,只對管理員可見。如果攻擊者能夠識別分配給管理員的參數,他們可以在自己的請求中設置這些參數,從而獲得對管理功能的訪問權限。
  2. 基於Referer的存取控制:在某些Web應用程式中,HTTP referer(引薦網址)是主要存取控制決策的基礎。然而,HTTP referer被認為是不安全的,攻擊者可以使用它並操縱它的值。
  3. 基於位置的存取控制:使用者的地理位置可以使用各種方法來確定,其中最常見的方法是通過IP地址。攻擊者可以通過使用Web代理、VPN、啟用數據漫遊的移動設備、直接操縱客戶端機制等方式來繞過基於位置的存取控制。

存取控制攻擊方法

  1. 使用不同用戶帳戶進行攻擊:嘗試使用不同的使用者帳戶來訪問應用程式。如果應用程式中存在破壞的存取控制,它允許您以合法使用者的身份訪問資源和功能。您可以使用工具如Burp Suite來訪問並比較兩個不同的使用者上下文。
  2. 攻擊多階段流程:如果網路應用程式架構中建立了多階段流程,上述技術將無效。在這種多階段流程中,使用者將在多個級別上執行多個條目以完成預期的流程。在多階段流程中,從客戶端向伺服器發送多個請求。為了攻擊這種流程,應該捕獲每個請求並測試存取控制。手動攻擊多階段流程的另一種方式是在瀏覽器中多次遍歷受保護的多階段流程,並使用代理工具來切換不同請求中提供的會話令牌,以更低特權使用者的令牌。
  3. 攻擊靜態資源:識別那些受保護的靜態資源是通過URL訪問的網路應用程式。嘗試直接請求這些URL,並檢查它們是否允許未經授權的使用者訪問。
  4. 攻擊直接訪問方法:網路應用程式接受某些請求,這些請求提供對伺服器端API的直接訪問。如果這些直接訪問方法存在存取控制弱點,攻擊者可以利用它們來入侵系統。
  5. 攻擊對HTTP方法的限制:測試不同的HTTP方法,如GET、POST、PUT、DELETE、TRACE和OPTIONS是重要的。攻擊者修改HTTP方法以入侵網路應用程式。如果網路應用程式接受這些修改的請求,存取控制可能會被繞過。

注入攻擊 / 輸入驗證攻擊

  1. Web腳本注入:如果使用者輸入用於動態執行代碼,則輸入製作成破壞預期數據上下文並在伺服器上執行命令的形式。
  2. 操作系統命令注入:如果應用程式使用使用者輸入來執行系統級命令,則可以利用操作系統命令注入,輸入惡意代碼來執行攻擊。
  3. SMTP注入:將任意SMTP命令注入應用程式和SMTP伺服器對話,以生成大量垃圾郵件。
  4. SQL注入:在輸入欄位中輸入一系列惡意的SQL查詢,以直接操作資料庫。
  5. LDAP注入:利用未經驗證的Web應用程式輸入漏洞,傳遞LDAP過濾器,以獲得對資料庫的直接訪問。
  6. XPath注入:在輸入欄位中輸入惡意字符串,以操作XPath查詢,從而干擾應用程式的邏輯。
  7. 緩衝區溢出:注入大量虛構數據,超出輸入欄位的容量。
  8. 文件注入:利用Web應用程式中的「動態文件包含」機制,注入惡意文件。
  9. 規範化:操作引用具有「點-點-斜線(../)」的文件的變數,以訪問應用程式中的受限目錄。

應用程式邏輯缺陷

在所有的網路應用程式中,都會應用大量的邏輯在每個層級上。一些邏輯的實現可能容易受到各種攻擊的威脅,但這些攻擊可能不容易察覺。大多數攻擊者主要關注高級別的攻擊,如SQL注入和跨站腳本(XSS)攻擊,因為它們具有容易識別的特徵。相比之下,應用程式邏輯缺陷與任何常見的特徵無關,使得它們更難以識別。漏洞掃描器的手動測試無法識別這種類型的缺陷,這使攻擊者能夠利用這些缺陷對網路應用程式造成嚴重損害。

大多數應用程式缺陷都源於開發人員的疏忽和虛假假設。應用程式邏輯缺陷在不同類型的網路應用程式中各不相同,並不限於特定的缺陷。獲取有關以前被利用的具有常見邏輯缺陷的應用程式的知識,可以提供有關如何處理應用程式邏輯缺陷的適當信息。

攻擊者通過利用應用程式邏輯缺陷的一個常見場景如下:

  • 場景:識別並利用零售網路應用程式中的邏輯缺陷。在大多數零售網路應用程式中,下訂單的過程包括選擇產品、確定訂單、提供付款詳情和提供送貨詳情。開發人員假設任何客戶都會按照設計的順序完成所有級別。識別這類應用程式,並使用代理工具(如Burp Suite)嘗試控制發送到網路應用程式的請求。此外,嘗試繞過第三階段,即通過操縱請求從第二階段跳到第四階段。這種類型的攻擊被稱為強制瀏覽(forced browsing)。這種缺陷使攻擊者可以避免支付產品價格並在送貨地址收到產品。如果攻擊者打算大規模利用這一漏洞,則可能導致嚴重的財務損失。

上一篇
Day 25 網站應用程式入侵 3
下一篇
Day 27 網站應用程式入侵 5
系列文
道德駭客新手入門30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言